package com.example.springcode.beans.factory;

import com.example.springcode.beans.BeansException;

/**
 * @Author: chenxiuxiang
 * @Date: 2024-03-07 18:32
 * @Description: Bean前置处理器 可以在Bean初始化前后修改Bean对象
 * 执行时机：每个Bean执行一次，实例化Bean时，执行初始化方法前后
 */
public interface BeanPostProcessor {
    /**
     * 在 Bean 对象执行初始化方法之前，执行此方法
     * @param bean     Bean对象
     * @param beanName Bean名称
     * @return 处理结果
     * @throws BeansException Bean异常
     */
    Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException;

    /**
     * 在 Bean 对象执行初始化方法之后，执行此方法
     * @param bean     Bean对象
     * @param beanName Bean名称
     * @return 处理结果
     * @throws BeansException Bean异常
     */
    Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException;
}
